package com.example.gobang_system.service.manager;

import org.springframework.stereotype.Component;
import org.springframework.web.socket.WebSocketSession;

import java.util.concurrent.ConcurrentHashMap;

/**
 * 用于管理在线用户
 */
@Component
public class OnlineUserManager {
    /**
     * 游戏大厅用户在线状态
     */
    private ConcurrentHashMap<Long, WebSocketSession> hallMap = new ConcurrentHashMap<>();
    /**
     * 游戏房间用户在线状态
     */
    private ConcurrentHashMap<Long, WebSocketSession> roomMap = new ConcurrentHashMap<>();

    /**
     * 用户进入游戏房间，将用户信息存储到 roomMap 中
     * @param userId
     * @param session
     */
    public void enterGameRoom(Long userId, WebSocketSession session) {
        roomMap.put(userId, session);
    }

    /**
     * 用户退出游戏房间，将用户信息从 roomMap 中删除
     * @param userId
     */
    public void exitGameRoom(Long userId) {
        roomMap.remove(userId);
    }

    /**
     * 从 roomMap 中获取用户信息
     * @param userId
     * @return
     */
    public WebSocketSession getFromRoom(Long userId) {
        return roomMap.get(userId);
    }

    /**
     * 用户进入游戏大厅，将用户信息存储到 hallMap 中
     * @param userId
     * @param session
     */
    public void enterGameHall(Long userId, WebSocketSession session) {
        hallMap.put(userId, session);
    }

    /**
     * 用户退出游戏大厅，将用户信息从 hallMap 中删除
     * @param userId
     */
    public void exitGameHall(Long userId) {
        hallMap.remove(userId);
    }

    /**
     * 从 hallMap 中获取用户信息
     * @param userId
     * @return
     */
    public WebSocketSession getFromHall(Long userId) {
        return hallMap.get(userId);
    }
}
